package com.example.demo2.factory;

import com.example.demo2.service.SendPrizesService;
import com.example.demo2.service.impl.DiscountServiceImpl;
import com.example.demo2.service.impl.SmallGiftServiceImpl;
import com.example.demo2.service.impl.YouKuMemberServiceImpl;

/**
 * 定义工厂方法
 * 具体工厂:生成商品抽奖的类型
 *
 * 优点:
 *      1.封装了创建对象的过程,可以通过参数直接获取对象,把对象的创建和业务逻辑分开,避免了可能会修改客户代码的问题。
 *      2.如果要实现新产品的话,直接修改工厂类,不需要在源代码中进行修改,降低了客户端修改代码的可能性,更加容易扩展
 * 缺点:
 *      1.再田间新产品的时候还是要修改工厂类的代码,违背了开闭原则。
 */
public class LotteryFactory {

    /**
     * 获取具体的发送 业务实现
     *
     * @param awardType
     * @return
     */
    public static SendPrizesService getInstance(Integer awardType) {
        SendPrizesService sendPrizesService = null;
        if (awardType == 1) {
            sendPrizesService = new DiscountServiceImpl();
        } else if (awardType == 2) {
            sendPrizesService = new YouKuMemberServiceImpl();
        } else if (awardType == 3) {
            sendPrizesService = new SmallGiftServiceImpl();
        }
        return sendPrizesService;
    }

}
